<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    var p = {
      id: 1001,
      name: '张三',
      age: 20,
      birthday: new Date(),
    }
    // console.log(p);
    var arr = Object.keys(p)
    // console.log(arr.length);

    var map = new Map();
    map.set('id', 1001)//不存在即添加
    map.set('name', "张三")
    map.set('birthday', new Date())
    map.set('id', 1002)//存在即修改
    var fn = function () { }
    map.set(fn, "8888")

    map.set(p, "这个键是对象")

    console.log(map);
    // map.delete('id')//删除
    // console.log(map.has('id'));
    // // map.clear()//清空
    // console.log(map);
    // console.log(map.size);//个数

    // console.log(map.get(fn));//获取
    // console.log(map.get(p));

    //1 遍历
    let iterator1 = map.keys();//获取所有键的集合
    // console.log(iterator1.next().value);
    // console.log(iterator1.next().value);
    // console.log(iterator1.next().value);
    // console.log(iterator1.next().value);
    // console.log(iterator1.next().value);
    let value
    while (value = iterator1.next().value) {
      // console.log(value);
    }
    // console.log(map.values());//获取值的集合

    //遍历1
    map.forEach(function (value, key) {
      // console.log(key, value);
    })

    //遍历2 of的对象解构
    for (let obj of map) {//对象解构
      // console.log(obj[0], obj[1]);
    }

    // 遍历3 of的数组解构
    for (let [k, v] of map) {
      // console.log(k, v);
    }

    //
    var arr3 = Object.entries(p)// 对象 转 数组
    console.log(arr3);


    let [...arr2] = map;// map 转 数组
    console.log(arr2);

    var m = new Map(arr2);// 数组 转 map
    console.log(map);










  </script>
</body>

</html>